Passed
Push — master ( a8bdc8...2feb85 )
by
unknown
01:06
created

Error.js ➔ ???   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 2.032

Importance

Changes 16
Bugs 0 Features 0
Metric Value
c 16
b 0
f 0
nc 2
dl 0
loc 13
ccs 8
cts 10
cp 0.8
rs 9.4285
cc 2
crap 2.032
nop 3
1
class NotifierError extends Error {
2
  constructor(type, context, originalError) {
3 6
    super(type.message(context));
4 6
    this.name = 'NotifierError';
5 6
    this.type = type.type;
6 6
    this.errorCode = type.code;
7 6
    this.message = type.message(context);
8 6
    this.serverMessage = this.message;
9 6
    this.statusCode = Math.floor(this.errorCode / 1000);
10 6
    if (originalError) {
11
      this.originalError = originalError;
12
      this.serverMessage = `${this.message}: ${this.originalError.message}`;
13
    }
14
  }
15
}
16
17 4
NotifierError.Types = Object.freeze({
18
  BAD_REQUEST: { code: 400000, message: () => '잘못된 요청입니다.' },
19 3
  BAD_REQUEST_INVALID: { code: 400100, message: context => `요청이 유효하지 않습니다: ${context.message}` },
20
  AUTH: { code: 401000, message: () => '로그인이 실패하였습니다.' },
21
  AUTH_TOKEN: { code: 401100, message: () => '인증 토큰에 문제가 있습니다.' },
22
  AUTH_TOKEN_INVALID: { code: 401110, message: () => '인증 토큰이 유효하지 않습니다.' },
23
  AUTH_TOKEN_EXPIRED: { code: 401120, message: () => '인증 토큰이 만료되었습니다.' },
24
  AUTH_USER: { code: 401200, message: () => '사용자 인증에 문제가 발생했습니다.' },
25
  AUTH_USER_NOT_EXIST: { code: 401210, message: context => `${context.username}은 존재하지 않는 사용자 입니다.` },
26
  AUTH_MISSING_PARAMS: { code: 401220, message: () => '사용자 이름 또는 패스워드를 입력하지 않았습니다.' },
27 2
  AUTH_INVALID_PARAMS: { code: 401230, message: () => '사용자 이름 또는 패스워드가 맞지 않습니다.' },
28
  FORBIDDEN: { code: 403000, message: () => '허가되지 않았습니다.' },
29
  FORBIDDEN_IP_ADDRESS: { code: 403100, message: context => `사용자의 IP(${context.remoteAddress})는 허가되지 않았습니다.` },
30
  FORBIDDEN_OPERATION: { code: 403200, message: () => '허가되지 않은 작업입니다.' },
31
  INVALID_PARAMS: { code: 400000, message: () => '파라미터가 잘못되었습니다.' },
32 8
  CONFLICT: { code: 409000, message: context => `${context.value}는 이미 존재하는 값입니다. 다른 값을 입력해 주세요.` },
33
  SERVER: { code: 500000, message: context => `서버 에러가 발생했습니다${context.message ? `: ${context.message}` : '.'}` },
34
  DB: { code: 500100, message: () => 'DB 에러가 발생했습니다.' },
35
});
36
37 4
Object.keys(NotifierError.Types).forEach((type) => {
38 68
  NotifierError.Types[type].type = type;
39
});
40
41
module.exports = NotifierError;
42